package com.ruoyi.common.utils;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.ThreadLocalRandom;

public class TradeNoGenerator {

    // 时间格式：年月日时分秒毫秒（17位）
    private static final DateTimeFormatter TIMESTAMP_FORMATTER =
            DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");

    // 业务标识前缀（根据实际场景调整，如订单类型）
    private static final String BUSINESS_PREFIX = "PAY";

    /**
     * 生成微信支付商户订单号（outTradeNo）
     * 格式：业务前缀 + 时间戳（17位） + 随机数（6位） = 总长度 17 + 3 + 6 = 26位
     * 示例：PAY20231010152030123456789
     */
    public static String generateOutTradeNo() {
        // 1. 获取当前时间戳（毫秒级）
        String timestamp = LocalDateTime.now().format(TIMESTAMP_FORMATTER);

        // 2. 生成6位随机数字（范围：100000 ~ 999999）
        int randomNum = ThreadLocalRandom.current().nextInt(100_000, 1_000_000);

        // 3. 拼接业务前缀、时间戳和随机数
        return BUSINESS_PREFIX + timestamp + randomNum;
    }



}
